This is an R Markdown Notebook. When you execute code within the notebook, the results appear beneath the code.
Try executing this chunk by clicking the Run button within the chunk or by placing your cursor inside it and pressing Cmd+Shift+Enter.
```r
install.packages(\data.table\)
library(data.table)
install.packages(\plotly\)
library(plotly)
install.packages(\stringr\)
library(stringr)
install.packages(\stringr\)
library(stringr)
install.packages(\plyr\)
library(plyr)
<!-- rnb-source-end -->
<!-- rnb-chunk-end -->
<!-- rnb-text-begin -->
Crawford
<!-- rnb-text-end -->
<!-- rnb-chunk-begin -->
<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxubGlicmFyeShkYXRhLnRhYmxlKVxubGlicmFyeShwbG90bHkpXG5saWJyYXJ5KHN0cmluZ3IpXG5saWJyYXJ5KFwibW9tZW50c1wiKVxuXG5cbiNwcmUgPC0gZnJlYWQoXCJDWVNNTl9QcmUgU3VydmV5X01PRElGSUVELmNzdlwiKVxucG9zdCA8LSBmcmVhZChcIkNZU01OX1Bvc3QgU3VydmV5X01PRElGSUVELmNzdlwiKVxuXG5zY2VudEIgPC0gcG9zdFsgd2hpY2goc3RyX2RldGVjdChwb3N0JFExOSwgXCJCXCIpKSxdXG5zY2VudEEgPC0gcG9zdFsgd2hpY2goc3RyX2RldGVjdChwb3N0JFExOSwgXCJBXCIpKSxdXG5cblxuIyMjKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIyMjXG5cblxuIyMjIyMjIyMjIyMjICAgICAgQmVnaW4gVVNFUiBQRVJDRVBUSU9OIFBsb3RzICAgICMjIyMjIyMjIyMjIyMjI1xuIyBCZWdpbiBQbG90c1xuVVBRdWVzdGlvbnMgPC0gYyhcIlExXCIsIFwiUTJcIiwgXCJRM1wiLCBcIlE0XCIsIFwiUTEzXCIsIFwiUTE0XCIpXG5VUHJvc2VtYXJ5IDwtIGMobWVhbihzY2VudEEkUTEpLCBcbiAgICAgICAgICAgICAgbWVhbihzY2VudEEkUTIpLCBcbiAgICAgICAgICAgICAgbWVhbihzY2VudEEkUTMpLCBcbiAgICAgICAgICAgICAgbWVhbihzY2VudEEkUTQpLCBcbiAgICAgICAgICAgICAgbWVhbihzY2VudEEkUTEzKSwgXG4gICAgICAgICAgICAgIG1lYW4oc2NlbnRBJFExNCkpXG5cblVQbGF2ZW5kZXIgPC0gYyhtZWFuKHNjZW50QiRRMSksIFxuICAgICAgICAgICAgICBtZWFuKHNjZW50QiRRMiksIFxuICAgICAgICAgICAgICBtZWFuKHNjZW50QiRRMyksXG4gICAgICAgICAgICAgIG1lYW4oc2NlbnRCJFE0KSxcbiAgICAgICAgICAgICAgbWVhbihzY2VudEIkUTEzKSxcbiAgICAgICAgICAgICAgbWVhbihzY2VudEIkUTE0KSlcblxuXG5VUGRhdGEgPC0gZGF0YS5mcmFtZShVUFF1ZXN0aW9ucywgVVByb3NlbWFyeSwgVVBsYXZlbmRlcilcblxuXG4jIENhbGN1bGF0ZSBzdGFuZGFyZCBkZXZpYXRpb25zXG5VUGxhdmVuZGVyX3NkIDwtIHJiaW5kKHNjZW50QSRRMSwgc2NlbnRBJFEyLCBzY2VudEEkUTMsIHNjZW50QSRRNCwgc2NlbnRBJFExMywgc2NlbnRBJFExNClcblVQcm9zZW1hcnlfc2QgPC0gcmJpbmQoc2NlbnRCJFExLCBzY2VudEIkUTIsIHNjZW50QiRRMywgc2NlbnRCJFE0LCBzY2VudEIkUTEzLCBzY2VudEIkUTE0KVxuXG5VUGxhdmVuZGVyX3NkX2ZpbmFsIDwtIGFwcGx5KFVQbGF2ZW5kZXJfc2QsIDEsIGZ1bmN0aW9uKHgpIHNkKHgpKVxuVVByb3NlbWFyeV9zZF9maW5hbCA8LSBhcHBseShVUHJvc2VtYXJ5X3NkLCAxLCBmdW5jdGlvbih4KSBzZCh4KSlcblxuZmlnIDwtIHBsb3RfbHkoVVBkYXRhLCB4ID0gflVQUXVlc3Rpb25zLCB5ID0gflVQcm9zZW1hcnksIHR5cGUgPSAnYmFyJywgbmFtZSA9ICdSb3NlbWFyeScsIGVycm9yX3kgPSB+bGlzdChhcnJheSA9IFVQcm9zZW1hcnlfc2RfZmluYWwsIGNvbG9yID0gJyMwMDAwMDAnKSlcblxuXG5maWcgPC0gZmlnICU+JSBhZGRfdHJhY2UoeSA9IH5VUGxhdmVuZGVyLCBuYW1lID0gJ0xhdmVuZGVyJywgZXJyb3JfeSA9IH5saXN0KGFycmF5ID0gVVBsYXZlbmRlcl9zZF9maW5hbCwgY29sb3IgPSAnIzAwMDAwMCcpKVxuXG5cbmZpZyA8LSBmaWcgJT4lIGxheW91dCh5YXhpcyA9IGxpc3QodGl0bGUgPSAnUmF0aW5nJyksIGJhcm1vZGUgPSAnZ3JvdXAnKVxuXG5maWdcbmBgYCJ9 -->
```r
library(data.table)
library(plotly)
library(stringr)
library("moments")
#pre <- fread("CYSMN_Pre Survey_MODIFIED.csv")
post <- fread("CYSMN_Post Survey_MODIFIED.csv")
scentB <- post[ which(str_detect(post$Q19, "B")),]
scentA <- post[ which(str_detect(post$Q19, "A")),]
###******************************************************************###
############ Begin USER PERCEPTION Plots ###############
# Begin Plots
UPQuestions <- c("Q1", "Q2", "Q3", "Q4", "Q13", "Q14")
UProsemary <- c(mean(scentA$Q1),
mean(scentA$Q2),
mean(scentA$Q3),
mean(scentA$Q4),
mean(scentA$Q13),
mean(scentA$Q14))
UPlavender <- c(mean(scentB$Q1),
mean(scentB$Q2),
mean(scentB$Q3),
mean(scentB$Q4),
mean(scentB$Q13),
mean(scentB$Q14))
UPdata <- data.frame(UPQuestions, UProsemary, UPlavender)
# Calculate standard deviations
UPlavender_sd <- rbind(scentA$Q1, scentA$Q2, scentA$Q3, scentA$Q4, scentA$Q13, scentA$Q14)
UProsemary_sd <- rbind(scentB$Q1, scentB$Q2, scentB$Q3, scentB$Q4, scentB$Q13, scentB$Q14)
UPlavender_sd_final <- apply(UPlavender_sd, 1, function(x) sd(x))
UProsemary_sd_final <- apply(UProsemary_sd, 1, function(x) sd(x))
fig <- plot_ly(UPdata, x = ~UPQuestions, y = ~UProsemary, type = 'bar', name = 'Rosemary', error_y = ~list(array = UProsemary_sd_final, color = '#000000'))
fig <- fig %>% add_trace(y = ~UPlavender, name = 'Lavender', error_y = ~list(array = UPlavender_sd_final, color = '#000000'))
fig <- fig %>% layout(yaxis = list(title = 'Rating'), barmode = 'group')
fig
###******************************************************************###
############ Begin USER ACCEPTABILITY Plots ###############
UAQuestions <- c("Q5", "Q6", "Q7", "Q8", "Q9", "Q10", "Q11", "Q12")
UArosemary <- c(mean(scentA$Q5),
mean(scentA$Q6),
mean(scentA$Q7),
mean(scentA$Q8),
mean(scentA$Q9),
mean(scentA$Q10),
mean(scentA$Q11),
mean(scentA$Q12))
UAlavender <- c(mean(scentB$Q5),
mean(scentB$Q6),
mean(scentB$Q7),
mean(scentB$Q8),
mean(scentB$Q9),
mean(scentB$Q10),
mean(scentB$Q11),
mean(scentB$Q12))
UAdata <- data.frame(UAQuestions, UArosemary, UAlavender)
# Calculate standard deviations
UAlavender_sd <- rbind(scentA$Q5,
scentA$Q6,
scentA$Q7,
scentA$Q8,
scentA$Q9,
scentA$Q10,
scentA$Q11,
scentA$Q12)
UArosemary_sd <- rbind(scentB$Q5,
scentB$Q6,
scentB$Q7,
scentB$Q8,
scentB$Q9,
scentB$Q10,
scentB$Q11,
scentB$Q12)
UAlavender_sd_final <- apply(UAlavender_sd, 1, function(x) sd(x))
UArosemary_sd_final <- apply(UArosemary_sd, 1, function(x) sd(x))
fig <- plot_ly(UAdata, x = ~UAQuestions, y = ~UArosemary, type = 'bar', name = 'Rosemary', error_y = ~list(array = UArosemary_sd_final, color = '#000000'))
fig <- fig %>% add_trace(y = ~UAlavender, name = 'Lavender', error_y = ~list(array = UAlavender_sd_final, color = '#000000'))
fig <- fig %>% layout(yaxis = list(title = 'Rating'), barmode = 'group')
fig
NA
NA
NA
NA
NA
NA
NA
NA
#Test Q1
wilcox.test(scentA$Q1, scentB$Q1, paired = FALSE)
cannot compute exact p-value with ties
Wilcoxon rank sum test with continuity correction
data: scentA$Q1 and scentB$Q1
W = 15.5, p-value = 0.6733
alternative hypothesis: true location shift is not equal to 0
#Test Q2
wilcox.test(scentA$Q2, scentB$Q2, paired = FALSE)
cannot compute exact p-value with ties
Wilcoxon rank sum test with continuity correction
data: scentA$Q2 and scentB$Q2
W = 15, p-value = 0.5948
alternative hypothesis: true location shift is not equal to 0
#Test Q3
wilcox.test(scentA$Q3, scentB$Q3, paired = FALSE)
cannot compute exact p-value with ties
Wilcoxon rank sum test with continuity correction
data: scentA$Q3 and scentB$Q3
W = 13, p-value = 0.4372
alternative hypothesis: true location shift is not equal to 0
#Test Q4
wilcox.test(scentA$Q4, scentB$Q4, paired = FALSE)
cannot compute exact p-value with ties
Wilcoxon rank sum test with continuity correction
data: scentA$Q4 and scentB$Q4
W = 9, p-value = 0.143
alternative hypothesis: true location shift is not equal to 0
#Test Q5
wilcox.test(scentA$Q5, scentB$Q5, paired = FALSE)
cannot compute exact p-value with ties
Wilcoxon rank sum test with continuity correction
data: scentA$Q5 and scentB$Q5
W = 10.5, p-value = 0.2259
alternative hypothesis: true location shift is not equal to 0
#Test Q6
wilcox.test(scentA$Q6, scentB$Q6, paired = FALSE)
cannot compute exact p-value with ties
Wilcoxon rank sum test with continuity correction
data: scentA$Q6 and scentB$Q6
W = 19.5, p-value = 0.8653
alternative hypothesis: true location shift is not equal to 0
#Test Q7
wilcox.test(scentA$Q7, scentB$Q7, paired = FALSE)
cannot compute exact p-value with ties
Wilcoxon rank sum test with continuity correction
data: scentA$Q7 and scentB$Q7
W = 19, p-value = 0.9313
alternative hypothesis: true location shift is not equal to 0
#Test Q8
wilcox.test(scentA$Q8, scentB$Q8, paired = FALSE)
cannot compute exact p-value with ties
Wilcoxon rank sum test with continuity correction
data: scentA$Q8 and scentB$Q8
W = 27, p-value = 0.1597
alternative hypothesis: true location shift is not equal to 0
#Test Q9
wilcox.test(scentA$Q9, scentB$Q9, paired = FALSE)
cannot compute exact p-value with ties
Wilcoxon rank sum test with continuity correction
data: scentA$Q9 and scentB$Q9
W = 12, p-value = 0.2824
alternative hypothesis: true location shift is not equal to 0
#Test Q10
wilcox.test(scentA$Q10, scentB$Q10, paired = FALSE)
cannot compute exact p-value with ties
Wilcoxon rank sum test with continuity correction
data: scentA$Q10 and scentB$Q10
W = 17, p-value = 0.9312
alternative hypothesis: true location shift is not equal to 0
#Test Q11
wilcox.test(scentA$Q11, scentB$Q11, paired = FALSE)
cannot compute exact p-value with ties
Wilcoxon rank sum test with continuity correction
data: scentA$Q11 and scentB$Q11
W = 20, p-value = 0.8055
alternative hypothesis: true location shift is not equal to 0
#Test Q12
wilcox.test(scentA$Q12, scentB$Q12, paired = FALSE)
cannot compute exact p-value with ties
Wilcoxon rank sum test with continuity correction
data: scentA$Q12 and scentB$Q12
W = 14.5, p-value = 0.6229
alternative hypothesis: true location shift is not equal to 0
#Test Q13
wilcox.test(scentA$Q13, scentB$Q13, paired = FALSE)
cannot compute exact p-value with ties
Wilcoxon rank sum test with continuity correction
data: scentA$Q13 and scentB$Q13
W = 21, p-value = 0.4047
alternative hypothesis: true location shift is not equal to 0
#Test Q14
wilcox.test(scentA$Q14, scentB$Q14, paired = FALSE)
cannot compute exact p-value with ties
Wilcoxon rank sum test with continuity correction
data: scentA$Q14 and scentB$Q14
W = 23, p-value = 0.4533
alternative hypothesis: true location shift is not equal to 0
#Get Type A Questions
############## COLUMN STATEMENTS ###############
Q1A <- c(scentA$Q1)
Q13A <- c(scentA$Q13)
Q14A <- c(scentA$Q14)
Q2A <- c(scentA$Q2)
Q3A <- c(scentA$Q3)
Q4A <- c(scentA$Q4)
Q5A <- c(scentA$Q5)
Q6A <- c(scentA$Q6)
Q7A <- c(scentA$Q7)
Q8A <- c(scentA$Q8)
Q9A <- c(scentA$Q9)
Q10A <- c(scentA$Q10)
Q11A <- c(scentA$Q11)
Q12A <- c(scentA$Q12)
############## AVERAGE STATEMENTS ###############
avgQ1A <- mean(Q1A)
avgQ13A <- mean(Q13A)
avgQ14A <- mean(Q14A)
avgQ2A <- mean(Q2A)
avgQ3A <- mean(Q3A)
avgQ4A <- mean(Q4A)
avgQ5A <- mean(Q5A)
avgQ6A <- mean(Q6A)
avgQ7A <- mean(Q7A)
avgQ8A <- mean(Q8A)
avgQ9A <- mean(Q9A)
avgQ10A <- mean(Q10A)
avgQ11A <- mean(Q11A)
avgQ12A <- mean(Q12A)
############## PRINT STATEMENTS ###############
stringQ1A <- "Question 1 for Type A average: "
print(paste(stringQ1A, avgQ1A))
[1] "Question 1 for Type A average: 5.33333333333333"
print("")
[1] ""
stringQ2A <- "Question 2 for Type A average: "
print(paste(stringQ2A, avgQ2A))
[1] "Question 2 for Type A average: 5.16666666666667"
print("")
[1] ""
stringQ3A <- "Question 3 for Type A average: "
print(paste(stringQ3A, avgQ3A))
[1] "Question 3 for Type A average: 5.33333333333333"
print("")
[1] ""
stringQ4A <- "Question 4 for Type A average: "
print(paste(stringQ4A, avgQ4A))
[1] "Question 4 for Type A average: 4.66666666666667"
print("")
[1] ""
stringQ5A <- "Question 5 for Type A average: "
print(paste(stringQ5A, avgQ5A))
[1] "Question 5 for Type A average: 1.83333333333333"
print("")
[1] ""
stringQ6A <- "Question 6 for Type A average: "
print(paste(stringQ6A, avgQ6A))
[1] "Question 6 for Type A average: 6.16666666666667"
print("")
[1] ""
stringQ7A <- "Question 7 for Type A average: "
print(paste(stringQ7A, avgQ7A))
[1] "Question 7 for Type A average: 5.5"
print("")
[1] ""
stringQ8A <- "Question 8 for Type A average: "
print(paste(stringQ8A, avgQ8A))
[1] "Question 8 for Type A average: 3.83333333333333"
print("")
[1] ""
stringQ9A <- "Question 9 for Type A average: "
print(paste(stringQ9A, avgQ9A))
[1] "Question 9 for Type A average: 1.16666666666667"
print("")
[1] ""
stringQ10A <- "Question 10 for Type A average: "
print(paste(stringQ10A, avgQ10A))
[1] "Question 10 for Type A average: 5.83333333333333"
print("")
[1] ""
stringQ11A <- "Question 11 for Type A average: "
print(paste(stringQ11A, avgQ11A))
[1] "Question 11 for Type A average: 4"
print("")
[1] ""
stringQ12A <- "Question 12 for Type A average: "
print(paste(stringQ12A, avgQ12A))
[1] "Question 12 for Type A average: 4.16666666666667"
print("")
[1] ""
stringQ13A <- "Question 13 for Type A average: "
print(paste(stringQ13A, avgQ13A))
[1] "Question 13 for Type A average: 7"
print("")
[1] ""
stringQ14A <- "Question 14 for Type A average: "
print(paste(stringQ14A, avgQ14A))
[1] "Question 14 for Type A average: 3.5"
print("")
[1] ""
print("Type A Standard Deviation")
[1] "Type A Standard Deviation"
sd(scentA$Q1)
[1] 2.160247
sd(scentA$Q2)
[1] 0.4082483
sd(scentA$Q3)
[1] 1.75119
sd(scentA$Q4)
[1] 1.861899
sd(scentA$Q5)
[1] 1.602082
sd(scentA$Q6)
[1] 0.9831921
sd(scentA$Q7)
[1] 0.83666
sd(scentA$Q8)
[1] 1.47196
sd(scentA$Q9)
[1] 0.4082483
sd(scentA$Q10)
[1] 0.9831921
sd(scentA$Q11)
[1] 1.67332
sd(scentA$Q12)
[1] 1.47196
sd(scentA$Q13)
[1] 0
sd(scentA$Q14)
[1] 2.345208
#Get Type B Questions
############## COLUMN STATEMENTS ###############
Q1B <- c(scentB$Q1)
Q13B <- c(scentB$Q13)
Q14B <- c(scentB$Q14)
Q2B <- c(scentB$Q2)
Q3B <- c(scentB$Q3)
Q4B <- c(scentB$Q4)
Q5B <- c(scentB$Q5)
Q6B <- c(scentB$Q6)
Q7B <- c(scentB$Q7)
Q8B <- c(scentB$Q8)
Q9B <- c(scentB$Q9)
Q10B <- c(scentB$Q10)
Q11B <- c(scentB$Q11)
Q12B <- c(scentB$Q12)
############## AVERAGE STATEMENTS ###############
avgQ1B <- mean(Q1B)
avgQ13B <- mean(Q13B)
avgQ14B <- mean(Q14B)
avgQ2B <- mean(Q2B)
avgQ3B <- mean(Q3B)
avgQ4B <- mean(Q4B)
avgQ5B <- mean(Q5B)
avgQ6B <- mean(Q6B)
avgQ7B <- mean(Q7B)
avgQ8B <- mean(Q8B)
avgQ9B <- mean(Q9B)
avgQ10B <- mean(Q10B)
avgQ11B <- mean(Q11B)
avgQ12B <- mean(Q12B)
############## PRINT STATEMENTS ###############
stringQ1B <- "Question 1 for Type B average: "
print(paste(stringQ1B, avgQ1B))
[1] "Question 1 for Type B average: 6.16666666666667"
print("")
[1] ""
stringQ2B <- "Question 2 for Type B average: "
print(paste(stringQ2B, avgQ2B))
[1] "Question 2 for Type B average: 5.33333333333333"
print("")
[1] ""
stringQ3B <- "Question 3 for Type B average: "
print(paste(stringQ3B, avgQ3B))
[1] "Question 3 for Type B average: 6.16666666666667"
print("")
[1] ""
stringQ4B <- "Question 4 for Type B average: "
print(paste(stringQ4B, avgQ4B))
[1] "Question 4 for Type B average: 5.83333333333333"
print("")
[1] ""
stringQ5B <- "Question 5 for Type B average: "
print(paste(stringQ5B, avgQ5B))
[1] "Question 5 for Type B average: 2.33333333333333"
print("")
[1] ""
stringQ6B <- "Question 6 for Type B average: "
print(paste(stringQ6B, avgQ6B))
[1] "Question 6 for Type B average: 5.66666666666667"
print("")
[1] ""
stringQ7B <- "Question 7 for Type B average: "
print(paste(stringQ7B, avgQ7B))
[1] "Question 7 for Type B average: 5.16666666666667"
print("")
[1] ""
stringQ8B <- "Question 8 for Type B average: "
print(paste(stringQ8B, avgQ8B))
[1] "Question 8 for Type B average: 2.66666666666667"
print("")
[1] ""
stringQ9B <- "Question 9 for Type B average: "
print(paste(stringQ9B, avgQ9B))
[1] "Question 9 for Type B average: 1.5"
print("")
[1] ""
stringQ10B <- "Question 10 for Type B average: "
print(paste(stringQ10B, avgQ10B))
[1] "Question 10 for Type B average: 6"
print("")
[1] ""
stringQ11B <- "Question 11 for Type B average: "
print(paste(stringQ11B, avgQ11B))
[1] "Question 11 for Type B average: 3.66666666666667"
print("")
[1] ""
stringQ12B <- "Question 12 for Type B average: "
print(paste(stringQ12B, avgQ12B))
[1] "Question 12 for Type B average: 4.66666666666667"
print("")
[1] ""
stringQ13B <- "Question 13 for Type B average: "
print(paste(stringQ13B, avgQ13B))
[1] "Question 13 for Type B average: 6.83333333333333"
print("")
[1] ""
stringQ14B <- "Question 14 for Type B average: "
print(paste(stringQ14B, avgQ14B))
[1] "Question 14 for Type B average: 2.33333333333333"
print("")
[1] ""
print("Tye B Standard Deviation")
[1] "Tye B Standard Deviation"
sd(scentB$Q1)
[1] 0.4082483
sd(scentB$Q2)
[1] 0.5163978
sd(scentB$Q3)
[1] 0.7527727
sd(scentB$Q4)
[1] 0.9831921
sd(scentB$Q5)
[1] 1.36626
sd(scentB$Q6)
[1] 1.861899
sd(scentB$Q7)
[1] 1.722401
sd(scentB$Q8)
[1] 1.21106
sd(scentB$Q9)
[1] 0.5477226
sd(scentB$Q10)
[1] 0.8944272
sd(scentB$Q11)
[1] 2.160247
sd(scentB$Q12)
[1] 1.21106
sd(scentB$Q13)
[1] 0.4082483
sd(scentB$Q14)
[1] 1.75119
```r
```r
############### Wilcox Testing for Type A ####################
# testQ1 <- wilcox.test(Q1B, Q1A, mu=0, alt=\two.sided\, conf.int=T, conf.level=0.95, paired=T, exact=T, correct=T)
testQ1 <- t.test(Q1B, Q1A)
print(testQ1)
Welch Two Sample t-test
data: Q1B and Q1A
t = 0.92848, df = 5.3567, p-value = 0.3931
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
-1.428383 3.095050
sample estimates:
mean of x mean of y
6.166667 5.333333
```r
```r
######### New data frame for Type A ###################
new_df_TA <- data.frame(Q1A, Q13A, Q14A, Q2A, Q3A, Q4A, Q5A, Q6A, Q7A, Q8A, Q9A, Q10A, Q11A, Q12A)
############ Skewed Values for Type A #############
skew_Q1A <- skewness(new_df_TA$Q1A)
skew_Q13A <- skewness(new_df_TA$Q13A)
skew_Q14A <- skewness(new_df_TA$Q14A)
skew_Q2A <- skewness(new_df_TA$Q2A)
skew_Q3A <- skewness(new_df_TA$Q3A)
skew_Q4A <- skewness(new_df_TA$Q4A)
skew_Q5A <- skewness(new_df_TA$Q5A)
skew_Q6A <- skewness(new_df_TA$Q6A)
skew_Q7A <- skewness(new_df_TA$Q7A)
skew_Q8A <- skewness(new_df_TA$Q8A)
skew_Q9A <- skewness(new_df_TA$Q9A)
skew_Q10A <- skewness(new_df_TA$Q10A)
skew_Q11A <- skewness(new_df_TA$Q11A)
skew_Q12A <- skewness(new_df_TA$Q12A)
```r
```r
library(datasets)
data(iris)
library(plotly)
# https://plotly.com/r/line-and-scatter/